在傳統的應用開發中,SQL 資料庫(例如 MySQL、PostgreSQL、Oracle)因為擁有嚴謹的 Schema 與 ACID 特性,非常適合金融、ERP、會計系統等需要嚴格一致性的場景。但隨著應用需求越來越多樣化,特別是在大數據、快速迭代與分散式架構的環境下,SQL 固定的表格結構往往顯得笨重。
SQL(Structured Query Language,結構化查詢語言)資料庫是一種 關聯式資料庫,以表格(Table)的形式存放資料,透過行(Row)與列(Column)的結構來管理資訊。常見的 SQL 資料庫系統包括 MySQL、PostgreSQL、Oracle Database、Microsoft SQL Server 等。
其核心特色是:
結構化:資料需先設計資料表與欄位,並定義資料型別與約束。
關聯性:不同資料表之間可透過「主鍵(Primary Key)」與「外鍵(Foreign Key)」建立關聯。
標準化語法:使用 SQL 指令進行新增(INSERT)、查詢(SELECT)、更新(UPDATE)、刪除(DELETE)等操作。
一致性與完整性:強調交易(Transaction)與資料一致性,適合需要嚴格規範的應用情境。
NoSQL(Not Only SQL)是一類 非關聯式資料庫,與傳統 SQL 關聯式資料庫不同,它不依賴固定的資料表與 Schema,能以更彈性的方式處理 非結構化或半結構化資料。NoSQL 資料庫通常具備 高擴展性、高效能、容易水平擴充 的特點,常見類型包含文件型(如 MongoDB)、鍵值型(如 Redis)、列式(如 Cassandra)、圖形型(如 Neo4j)。它特別適合 大數據處理、即時應用、高併發服務 等場景。
| 項目 | SQL 資料庫 (關聯式) | NoSQL 資料庫 (以 MongoDB 為例) |
|---|---|---|
| 資料模型 | 資料表 (Table)、列 (Row)、欄 (Column) | 文件 (Document)、集合 (Collection) |
| 結構 | 嚴格定義 Schema,需事先設計 | Schema 彈性,可同一集合中存不同欄位 |
| 查詢語言 | SQL (結構化查詢語言) | 各家語法不同,MongoDB 使用 JSON-like 查詢 |
| 資料關聯 | 透過 JOIN 關聯多表 | 傾向透過嵌入 (Embed) 或參照 (Reference),少用 JOIN |
| 擴充性 | 垂直擴充 (Scale-up),依賴更強硬體 | 水平擴充 (Scale-out),易於分散式架構 |
| 事務處理 | 強調 ACID (原子性、一致性、隔離性、持久性) | 傳統上較弱,MongoDB 4.0 後支援多文件交易 |
| 儲存形式 | 結構化資料,固定格式 | 半結構化或非結構化 (JSON、BSON) |
| 適用場景 | 金融系統、ERP、需要嚴格一致性的應用 | 高彈性、快速迭代的專案,如電商、社交平台、IoT |
MongoDB 是一種 NoSQL 資料庫,以 文件(Document) 形式來儲存資料,每筆資料使用類似 JSON 的 BSON 格式,具有高度彈性與可擴展性。它是目前最受歡迎的 NoSQL 解決方案之一,廣泛應用於網路服務、即時分析、大數據與雲端應用。
| 面向 | 說明 |
|---|---|
| 類型 | NoSQL 文件導向資料庫 |
| 資料格式 | BSON(二進位 JSON),結構類似 JSON |
| Schema | 無需固定 Schema,欄位可動態增減 |
| 核心特色 | 文件導向、高彈性、支援水平擴展(Sharding)、強大查詢與聚合(Aggregation Pipeline)、雲端友好(MongoDB Atlas) |
| 適用場景 | 即時應用(聊天室、通知)、電商平台(商品/訂單)、大數據分析、快速原型開發 |
| 優勢 | 彈性高、容易擴展、資料格式直觀 |
| 與 SQL 差異 | SQL 以表格存放,需固定 Schema;MongoDB 以文件存放,結構彈性更大 |
感謝 未知作者 的精彩分享!
JavaScript 生態系統真的很豐富,這樣的分享對開發者很有幫助。
也歡迎版主有空參考我的系列文「南桃AI重生記」:https://ithelp.ithome.com.tw/users/20046160/ironman/8311
如果覺得有幫助的話,也歡迎訂閱支持!